Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
75 / 75
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3use Illuminate\Support\Facades\Route;
4use App\Http\Controllers\AuthController;
5use App\Http\Controllers\RegisterController;
6use App\Http\Controllers\VolunteerRegistrationController;
7use App\Http\Controllers\VolunteerController;
8use App\Http\Controllers\FoodRescueController;
9use App\Http\Controllers\MyDonationsController;
10use App\Http\Controllers\Donor;
11use App\Http\Controllers\Panti;
12
13// Home page
14Route::view('/', 'home.index')->name('home');
15
16Route::get('/login', [AuthController::class, 'showLogin'])->name('login');
17Route::post('/login', [AuthController::class, 'login'])->name('login.submit');
18Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
19
20Route::get('/register', [RegisterController::class, 'showRegister'])->name('register');
21Route::post('/register/donor', [RegisterController::class, 'registerDonor'])->name('register.donor');
22Route::post('/register/recipient', [RegisterController::class, 'registerRecipient'])->name('register.recipient');
23Route::get('/volunteer', [VolunteerController::class, 'index'])->name('volunteer');
24Route::get('/wishlist', [\App\Http\Controllers\WishlistController::class, 'index'])->name('wishlist');
25Route::get('/wishlist/matching', [\App\Http\Controllers\DonationMatchingController::class, 'findMatches'])->name('wishlist.matching');
26Route::post('/wishlist/{id}/fulfill', [\App\Http\Controllers\DonationMatchingController::class, 'fulfillWishlist'])->name('wishlist.fulfill')->middleware('auth');
27Route::get('/wishlist/pledge/{id}', [\App\Http\Controllers\DonationMatchingController::class, 'showPledge'])->name('wishlist.pledge-detail')->middleware('auth');
28Route::post('/wishlist/pledge/{id}/confirm', [\App\Http\Controllers\DonationMatchingController::class, 'confirmPledge'])->name('wishlist.pledge.confirm')->middleware('auth');
29Route::get('/food-rescue', [FoodRescueController::class, 'index'])->name('food-rescue');
30Route::post('/food-rescue/{id}/claim', [FoodRescueController::class, 'claim'])->name('food-rescue.claim')->middleware('auth');
31Route::get('/food-rescue/{id}', [FoodRescueController::class, 'detail'])->name('food-rescue.detail');
32Route::get('/my-donations', [MyDonationsController::class, 'index'])->name('my-donations');
33// Register-panti page removed; redirect to the main register selection
34Route::redirect('/register-panti', '/register');
35
36// Volunteer registration routes
37Route::get('/volunteer/register', [VolunteerRegistrationController::class, 'create'])->middleware('auth')->name('volunteer.register');
38Route::post('/volunteer/register', [VolunteerRegistrationController::class, 'store'])->middleware('auth')->name('volunteer.register.store');
39Route::get('/volunteer/status', [VolunteerRegistrationController::class, 'status'])->middleware('auth')->name('volunteer.status');
40Route::get('/volunteer/dashboard', [VolunteerController::class, 'dashboard'])->middleware('auth')->name('volunteer.dashboard');
41
42use App\Http\Controllers\Admin\AdminController;
43use App\Http\Controllers\Admin\UserController;
44use App\Http\Controllers\Admin\DonasiController;
45use App\Http\Controllers\Admin\PantiProfileController;
46use App\Http\Controllers\Admin\RelawanProfileController;
47use App\Http\Controllers\Panti\ProfileController;
48use App\Http\Controllers\Panti\WishlistController;
49use App\Http\Controllers\Panti\DonasiMasukController;
50
51Route::prefix('admin')->name('admin.')->middleware(['auth', \App\Http\Middleware\EnsureAdmin::class])->group(function () {
52    // Redirect /admin to dashboard
53    Route::get('/', function () { return redirect()->route('admin.dashboard'); })->name('index');
54
55    Route::get('/dashboard', [AdminController::class, 'index'])->name('dashboard');
56
57    // Static admin pages (views)
58    // Manajemen Donasi (CRUD)
59    Route::get('/manajemen-donasi', [DonasiController::class, 'index'])->name('donations.index');
60    Route::get('/manajemen-donasi/create', [DonasiController::class, 'create'])->name('donations.create');
61    Route::post('/manajemen-donasi', [DonasiController::class, 'store'])->name('donations.store');
62    Route::get('/manajemen-donasi/{id}/edit', [DonasiController::class, 'edit'])->name('donations.edit');
63    Route::put('/manajemen-donasi/{id}', [DonasiController::class, 'update'])->name('donations.update');
64    Route::delete('/manajemen-donasi/{id}', [DonasiController::class, 'destroy'])->name('donations.destroy');
65    // Food Rescue (CRUD)
66    Route::get('/food-rescue', [FoodRescueController::class, 'adminIndex'])->name('food-rescue.index');
67    Route::get('/food-rescue/create', [FoodRescueController::class, 'create'])->name('food-rescue.create');
68    Route::post('/food-rescue', [FoodRescueController::class, 'store'])->name('food-rescue.store');
69    Route::get('/food-rescue/{id}/edit', [FoodRescueController::class, 'edit'])->name('food-rescue.edit');
70    Route::put('/food-rescue/{id}', [FoodRescueController::class, 'update'])->name('food-rescue.update');
71    Route::delete('/food-rescue/{id}', [FoodRescueController::class, 'destroy'])->name('food-rescue.destroy');
72    // Manajemen Penerima (Panti Profiles)
73    Route::get('/manajemen-penerima', [PantiProfileController::class, 'index'])->name('recipients.index');
74    Route::get('/manajemen-penerima/create', [PantiProfileController::class, 'create'])->name('recipients.create');
75    Route::post('/manajemen-penerima', [PantiProfileController::class, 'store'])->name('recipients.store');
76    Route::get('/manajemen-penerima/{id}/edit', [PantiProfileController::class, 'edit'])->name('recipients.edit');
77    Route::put('/manajemen-penerima/{id}', [PantiProfileController::class, 'update'])->name('recipients.update');
78    Route::delete('/manajemen-penerima/{id}', [PantiProfileController::class, 'destroy'])->name('recipients.destroy');
79    // Manajemen Relawan (CRUD)
80    Route::get('/manajemen-relawan', [RelawanProfileController::class, 'index'])->name('volunteers.index');
81    Route::get('/manajemen-relawan/create', [RelawanProfileController::class, 'create'])->name('volunteers.create');
82    Route::post('/manajemen-relawan', [RelawanProfileController::class, 'store'])->name('volunteers.store');
83    Route::get('/manajemen-relawan/{id}/edit', [RelawanProfileController::class, 'edit'])->name('volunteers.edit');
84    Route::put('/manajemen-relawan/{id}', [RelawanProfileController::class, 'update'])->name('volunteers.update');
85    Route::delete('/manajemen-relawan/{id}', [RelawanProfileController::class, 'destroy'])->name('volunteers.destroy');
86    Route::view('/pengaturan', 'admin.pengaturan-admin.index')->name('settings.index');
87    Route::view('/laporan', 'admin.laporan-admin.index')->name('reports.index');
88
89    // Manajemen pengguna
90    Route::get('/manajemen-pengguna', [UserController::class, 'index'])->name('users.index');
91    Route::post('/manajemen-pengguna', [UserController::class, 'store'])->name('users.store');
92    Route::get('/manajemen-pengguna/{id}/edit', [UserController::class, 'edit'])->name('users.edit');
93    Route::put('/manajemen-pengguna/{id}', [UserController::class, 'update'])->name('users.update');
94    Route::delete('/manajemen-pengguna/{id}', [UserController::class, 'destroy'])->name('users.destroy');
95});
96
97// Panti (recipient) pages
98Route::prefix('panti')->name('panti.')->middleware(['auth'])->group(function () {
99    Route::get('/dashboard', function () { return view('panti.dashboard.index'); })->name('dashboard');
100    Route::get('/wishlist', [WishlistController::class, 'index'])->name('wishlist');
101    Route::post('/wishlist', [WishlistController::class, 'store'])->name('wishlist.store');
102    Route::put('/wishlist/{id}', [WishlistController::class, 'update'])->name('wishlist.update');
103    Route::delete('/wishlist/{id}', [WishlistController::class, 'destroy'])->name('wishlist.destroy');
104    Route::get('/donasi-masuk', [DonasiMasukController::class, 'index'])->name('donasi-masuk');
105    Route::post('/donasi-masuk/{id}/confirm', [DonasiMasukController::class, 'confirmReceipt'])->name('donasi-masuk.confirm');
106    Route::get('/donasi-masuk/{id}/detail', [DonasiMasukController::class, 'viewDetail'])->name('donasi-masuk.detail');
107    Route::get('/food-rescue', function () { return view('panti.food-rescue.index'); })->name('food-rescue');
108    Route::get('/laporan', function () { return view('panti.laporan.index'); })->name('laporan');
109    Route::get('/profil', [ProfileController::class, 'index'])->name('profil');
110    Route::post('/profil', [ProfileController::class, 'update'])->name('profil.update');
111    Route::get('/pengaturan', function () { return view('panti.pengaturan.index'); })->name('pengaturan');
112});
113
114// Donor profile page
115Route::get('/donor-profile', [Donor\ProfileController::class, 'index'])->name('donor-profile')->middleware('auth');
116Route::post('/donor-profile', [Donor\ProfileController::class, 'update'])->name('donor-profile.update')->middleware('auth');
117Route::post('/donor-profile/password', [Donor\ProfileController::class, 'updatePassword'])->name('donor-profile.update-password')->middleware('auth');
118